package com.ruoyi.system.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.YzContent;
import com.ruoyi.system.domain.YzProduct;
import com.ruoyi.system.mapper.YzContentMapper;
import com.ruoyi.system.mapper.YzProductMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.YzClassifyMapper;
import com.ruoyi.system.domain.YzClassify;
import com.ruoyi.system.service.IYzClassifyService;

/**
 * 分类管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-03-28
 */
@Service
public class YzClassifyServiceImpl implements IYzClassifyService {
    @Autowired
    private YzClassifyMapper yzClassifyMapper;

    @Autowired
    private YzContentServiceImpl yzContentService;

    @Autowired
    private YzProductServiceImpl YzProductService;

    /**
     * 查询分类管理
     * 
     * @param classifyId 分类管理主键
     * @return 分类管理
     */
    @Override
    public YzClassify selectYzClassifyByClassifyId(Long classifyId)
    {
        return yzClassifyMapper.selectYzClassifyByClassifyId(classifyId);
    }

    /**
     * 查询分类管理列表
     * 
     * @param yzClassify 分类管理
     * @return 分类管理
     */
    @Override
    public List<YzClassify> selectYzClassifyList(YzClassify yzClassify)
    {
        return yzClassifyMapper.selectYzClassifyList(yzClassify);
    }

    /**
     * 新增分类管理
     * 
     * @param yzClassify 分类管理
     * @return 结果
     */
    @Override
    public int insertYzClassify(YzClassify yzClassify) {
        yzClassify.setCreateTime(DateUtils.getNowDate());
        //根据传入进来的分类，如果parentId分类不为空，则证明为子分类，需要要查到父分类的类型并给子分类赋值
        if(yzClassify.getParentId() != null){
            YzClassify tmp = yzClassifyMapper.selectYzClassifyByClassifyId(yzClassify.getParentId());
            yzClassify.setClassifyType(tmp.getClassifyType());
        }
        return yzClassifyMapper.insertYzClassify(yzClassify);
    }

    /**
     * 修改分类管理
     * 
     * @param yzClassify 分类管理
     * @return 结果
     */
    @Override
    public int updateYzClassify(YzClassify yzClassify) {
        return yzClassifyMapper.updateYzClassify(yzClassify);
    }

    /**
     * 批量删除分类管理
     * 
     * @param classifyIds 需要删除的分类管理主键
     * @return 结果
     */
    @Override
    public int deleteYzClassifyByClassifyIds(Long[] classifyIds)
    {
        return yzClassifyMapper.deleteYzClassifyByClassifyIds(classifyIds);
    }

    /**
     * 删除分类管理信息
     * 
     * @param classifyId 分类管理主键
     * @return 结果
     */
    @Override
    public int deleteYzClassifyByClassifyId(Long classifyId) {
        //根据分类主键搜索子分类
        List<YzClassify> yzClassifies = yzClassifyMapper.selectYzClassifyChildren(classifyId);
        //创建内容对象用于传参
        YzContent yzContent = new YzContent();
        yzContent.setContentClassify(classifyId);
        //搜索分类下内容（关于我们，新闻，咨询等）
        List<YzContent> yzContentList = yzContentService.selectYzContentList(yzContent, null, null);
        //创建产品对象用于传参
        YzProduct yzProduct = new YzProduct();
        //搜索分类下产品
        List<YzProduct> yzProductList = YzProductService.selectYzProductList(yzProduct);
        //判断分类下是否有子分类，内容或产品，当全部为空时，执行删除返回影响行数，否则返回0
        if(yzClassifies.isEmpty() && yzContentList.isEmpty() && yzProductList.isEmpty()){
            return yzClassifyMapper.deleteYzClassifyByClassifyId(classifyId);
        }
        return 0;
    }

    @Override
    public List<YzClassify> selectYzClassifyChildren(Long parentId) {
        return yzClassifyMapper.selectYzClassifyChildren(parentId);
    }
}
